﻿#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
//struct S
//{
//	int data[1000];
//	int num;
//};
//struct S s = { {1,2,3,4}, 1000 };
////结构体（数值）传参
//void print1(struct S s)
//{
//	printf("%d\n", s.num);
//}
////结构体地址传参
//void print2(struct S* ps)
//{
//	printf("%d\n", ps->num);
//}
//
//int main()
//{
//	print1(s);//传值调用
//	print2(&s);//传址调用
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//    int n = 0;
//    scanf("%d", &n);
//    int sum = 0;
//    while (n)
//    {
//        while (n)
//        {
//            sum += n % 10;
//            n /= 10;
//        }
//        if (sum < 10)
//        {
//            break;
//        }
//        else
//        {
//            n = sum;
//            sum = 0;
//        }
//    }
//    printf("%d\n", sum);
//    return 0;
//}


//#include <stdio.h>
//struct A
//{
//	//与结构体不同，多了个冒号和数字
//	int _a : 2;
//	int _b : 5;
//	int _c : 10;
//	int _d : 30;
//};
//
//int main()
//{
//	printf("%zd\n", sizeof(struct A));
//	return 0;
//}


//#include <stdio.h>
//struct S
//{
//	//冒号后面的数字，是这个变量对应的空间，单位是比特位
//	//创建了char类型的变量，分别给出3，4，5，4个比特位的空间
//	char a : 3;
//	char b : 4;
//	char c : 5;
//	char d : 4;
//};
//
//int main()
//{
//	struct S s = { 0 };
//	printf("%zd\n", sizeof(s));
//	//分别给对应的变量赋值
//	s.a = 10;//1010(四个比特位)
//	s.b = 12;//1100（四个比特位）
//	s.c = 3;//11（两个比特位）
//	s.d = 4;//100（三个比特位）
//	return 0;
//}


//#include <stdio.h>
//struct A
//{
//	int _a : 2;
//	int _b : 5;
//	int _c : 10;
//	int _d : 30;
//};
//int main()
//{
//	struct A sa = { 0 };
//	scanf("%d", &sa._b);//这是错误的,编译器这里也会报错
//
//	//正确的⽰范
//	int b = 0;
//	scanf("%d", &b);
//	sa._b = b;
//	return 0;
//}


//#include <stdio.h>
//union un//创建一个联合体类型un
//{
//	char c;
//	int i;
//};
//int main()
//{
//	union un u = { 0 };//创建一个联合体变量并初始化
//	printf("%zd\n", sizeof(u));
//	printf("%p\n", &(u.c));//拿到c的地址
//	printf("%p\n", &(u.i));//拿到i的地址
//	printf("%p\n", &u);//拿到整个联合体的地址
//	return 0;
//}


//#include <stdio.h>
//union un//创建一个联合体类型un
//{
//	char c;
//	int i;
//};
//int main()
//{
//	union un u = { 0 };//创建一个联合体变量并初始化
//	u.i = 0x11223344;
//	u.c = 0x55;
//	return 0;
//}